﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SIM.Geo.BE;
using System.Data;

namespace SIM.Geo.DA
{
    public class DACategoriaLabor : Base
    {
        /// <summary>
        /// Devuelve la lista de categoria de labores
        /// </summary>
        /// <returns></returns>
        public List<CategoriaLabor> ListarCategoriaLabor()
        {
            return this.Context.CategoriaLabor.ToList();
        }

        /// <summary>
        /// Método para insertar un categoria de labor
        /// </summary>
        /// <param name="CategoriaLabor"></param>
        /// <returns></returns>
        public int InsertarCategoriaLabor(CategoriaLabor categoriaLabor)
        {
            this.Context.CategoriaLabor.AddObject(categoriaLabor);
            this.Context.SaveChanges();
            return categoriaLabor.CodigoCategoriaLabor;
        }
        /// <summary>
        /// Método para modificar un categoria de labor
        /// </summary>
        /// <param name="CategoriaLabor"></param>
        public void ModificarCategoriaLabor(CategoriaLabor categoriaLabor)
        {
            this.Context.CategoriaLabor.Attach(categoriaLabor);
            this.Context.ObjectStateManager.ChangeObjectState(categoriaLabor, EntityState.Modified);
            this.Context.SaveChanges();
        }
        /// <summary>
        /// Método para eliminar categoria de labor
        /// </summary>
        /// <param name="CategoriaLabor"></param>
        public void EliminarCategoriaLabor(CategoriaLabor categoriaLabor)
        {
            this.Context.CategoriaLabor.DeleteObject(categoriaLabor);
            this.Context.SaveChanges();
        }
        /// <summary>
        /// Método que busca por nombre categoria de labor
        /// </summary>
        /// <param name="nombre"></param>
        /// <returns></returns>
        public List<CategoriaLabor> BuscarCategoriaLabor(string nombre)
        {
            return this.Context.CategoriaLabor.Where(x => x.Descripcion.StartsWith(nombre)).ToList();
        }
        /// <summary>
        /// Método que devuelve categoria de labor por codigo
        /// </summary>
        /// <param name="codigoCategoriaLabor"></param>
        /// <returns></returns>
        public CategoriaLabor ObtenerCategoriaLabor(int codigoCategoriaLabor)
        {
            return this.Context.CategoriaLabor.Where(x => x.CodigoCategoriaLabor.Equals(codigoCategoriaLabor)).FirstOrDefault();
        }
    }
}
